package com.imooc.miaosha.redis.key.base;

/**
 * 抽象的Key前缀和过期时间的实现<br>
 * 2个重要的核心：前缀和过期时间
 */
public abstract class AbstractPrefix implements KeyPrefix {

    private int expireSeconds;

    private String prefix;

    public AbstractPrefix(String prefix) {//0代表永不过期
        this(0, prefix);
    }

    /**
     * LCF Note:<br>
     * 构造函数是必须在实现类显示实现的，应该是抽象类。<br>
     * 此点以前不怎么使用
     *
     * @param expireSeconds 过期时间
     * @param prefix        前缀
     */
    public AbstractPrefix(int expireSeconds, String prefix) {
        this.expireSeconds = expireSeconds;
        this.prefix = prefix;
    }

    @Override
    public int expireSeconds() {//默认0代表永不过期
        return expireSeconds;
    }

    @Override
    public String getPrefix() {
        String className = getClass().getSimpleName();
        return className + ":" + prefix;
    }

}
